Die Aufgabenstellung finden Sie hier: https://informatik-franke.de/lehre/sose/fadiinf/u4.html
Lernen mit Lösungsbeispielen
Der Leseansatz
Der Expertenansatz
Der Spiralansatz
Programmieren als Prozess
- Generelles Verständnis: Was sind Programme und was kann man damit machen?
- Vorstellung vom Computer als Maschine, die Programme ausführen kann.
- Notation einer Programmiersprache: Syntax und Semantik
- Repertoire an grundlegenden Lösungsansätzen
- Praktische Fertigkeiten zum Planen, Implementieren, Testen und Debuggen.
Programmieren als komplexer, explorativer und inkrementeller Prozess
- Bevor ein Programm geschrieben werden kann, muss die Problemdomäne verstanden werden.
- Verständnis des Computermodells, das durch die Programmiersprache impliziert wird.
- Verständnis des Zusammenhangs zwischen statischer Beschreibung des Programms (Quellcode) und der dynamischen Ausführung (Laufzeitverhalten).
- Laufzeitverhalten verstehen: Kontrollfluss, Datenfluss, Datenstrukturen usw. Mit anfänglicher Schwierigkeit des Verständnis des Datenfluss.
Programmieren als Prozess - Live-Coding
Programmierprozess demonstrieren und für die Lernenden erfahrbar machen.
Lehrender entwickelt "live" Code und denkt laut während er denn Code schreibt, sodass die Lernenden den Denk- und Arbeitsprozess des Experten beobachten und nachvollziehen können.
Ziel dabei ist es, dass Programmcode schrittweise entwickelt wird und das fertige Programm erst am Ende des gesamten Programmierprozesses steht.
Statische, vorgefertigete Programmbeispiele können den Eindruck erwecken, dass zuerst der gesamte Programmcode geschrieben wird und erst am Ende der Code kompiliert und ausgeführt wird.
Variante - Participatory Live Coding
Variante - Screen Recordings
Vorteile Live-Coding
- Programmierprozess ist für Anfänger sichtbar und nachvollziehbar
- Debugging wird als Teil des Programmierprozesses verstanden und erlebt
- Gute Programmierpratkiken werden demonstriert
Inkrementelle Entwicklung kann demonstriert werden
- Nur wenige Zeilen code schreiben bevor getestet wird
- Kontinuierlich testen
- Kontinuierlich Fehler korrigieren
- Konkinuierlich refaktorieren, d.h. den Code verbessern
"Notional machine"